home *** CD-ROM | disk | FTP | other *** search
- LOGICAL FUNCTION WIZARD(DUMMY)
-
- C ASK IF HE'S A WIZARD. IF HE SAYS YES, MAKE HIM PROVE IT. RETURN TRUE IF HE
- C REALLY IS A WIZARD.
-
- IMPLICIT INTEGER*4 (A-Z)
- LOGICAL YESM,WIZ
- DIMENSION HNAME(4),VAL(4)
- COMMON /WIZCOM/WKDAY,WKEND,HOLID,HBEGIN,HEND,HNAME,
- 1 SHORT,MAGIC,MAGNM,LATNCY,SAVED,SAVET,SETUP,WIZ
-
- WIZARD=YESM(16,0,7)
- IF(.NOT.WIZARD) RETURN
-
- C HE SAYS HE IS. FIRST STEP: DOES HE KNOW ANYTHING MAGICAL?
-
- CALL MSPEAK(17)
- CALL GETIN(WORD,X,Y,Z)
- IF(WORD.NE.MAGIC) GOTO 99
-
- C
- C HE DOES. GIVE HIM A RANDOM CHALLENGE AND CHECK HIS REPLY.
- C
- CALL DATIME(D,T)
- T=T*2+1
- WORD='@@@@'
- DO 15 Y=1,4
- X=79+MOD(D,4)
- D=D/4
- DO 12 Z=1,X
- 12 T=MOD(T*1027,1048576)
- VAL(Y)=(T*26)/1048576+1
- 15 WORD=WORD+SHIFT(VAL(Y),32-8*Y)
- IF(YESM(18,0,0)) GOTO 99
- WRITE(*,18) WORD
- 18 FORMAT(/1X,A4)
- CALL GETIN(WORD,X,Y,Z)
- CALL DATIME(D,T)
- T=(T/60)*40+(T/10)*10
- D=MAGNM
- DO 19 Y=1,4
- Z=MOD(Y,4)+1
- X=MOD(IABS(VAL(Y)-VAL(Z))*MOD(D,10)+MOD(T,10),26)+1
- T=T/10
- D=D/10
- 19 WORD=WORD-SHIFT(X,32-8*Y)
- IF(WORD.NE.'@@@@') GOTO 99
-
- C BY GEORGE, HE REALLY *IS* A WIZARD!
-
- 100 CALL MSPEAK(19)
- WIZ=.TRUE.
- RETURN
-
- C AHA! AN IMPOSTOR!
-
- 99 CALL MSPEAK(20)
- WIZARD=.FALSE.
- RETURN
- END
-